package com.dynabook.oa.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dynabook.oa.mapper.EclOaToPcsDetailMapper;
import com.dynabook.oa.model.dto.CheckOADTO;
import com.dynabook.oa.model.entity.EclOaToPcsDetail;
import com.dynabook.oa.model.vo.CheckOASecondVO;
import com.dynabook.oa.service.EclOaToPcsDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
* @author tester
* @description 针对表【ECL_OA_TO_PCS_DETAIL_】的数据库操作Service实现
* @createDate 2025-05-28 17:54:44
*/
@Service
@Slf4j
public class EclOaToPcsDetailServiceImpl extends ServiceImpl<EclOaToPcsDetailMapper, EclOaToPcsDetail>
    implements EclOaToPcsDetailService {

    @Override
    @Transactional
    public CheckOASecondVO checkOASecond(CheckOADTO checkOADTO) {
        LambdaQueryWrapper<EclOaToPcsDetail> lambdaWrapper = new LambdaQueryWrapper<>();
        lambdaWrapper.eq(EclOaToPcsDetail::getRequestId, checkOADTO.getRequestId());
        lambdaWrapper.select(EclOaToPcsDetail::getRequestId, EclOaToPcsDetail::getItemCode, EclOaToPcsDetail::getQuantity);
        EclOaToPcsDetail eclOaToPcsDetail = this.getOne(lambdaWrapper);
        CheckOASecondVO checkOASecondVO = new CheckOASecondVO();
            if(eclOaToPcsDetail == null){
                log.info(checkOADTO.getRequestId()+"REQUEST_ID不存在");
                return checkOASecondVO.setFlag(false).setMessage("REQUEST_ID不存在");
            }
            if(StrUtil.isBlank(eclOaToPcsDetail.getItemCode())){
                log.info("OA G-CODE为空");
                return checkOASecondVO.setFlag(false).setMessage("OA G-CODE为空");
            }
            if(!eclOaToPcsDetail.getItemCode().equals(checkOADTO.getItemCode())){
                log.info("EBS G-CODE为"+checkOADTO.getItemCode()+"OA  G-CODE为"+eclOaToPcsDetail.getItemCode() +"不一致");
                return checkOASecondVO.setFlag(false).setMessage("EBS G-CODE为"+checkOADTO.getItemCode()+"OA  G-CODE为"+eclOaToPcsDetail.getItemCode() +"不一致");
            }
            if(eclOaToPcsDetail.getQuantity()== null){
                log.info("OA数量为空");
                return checkOASecondVO.setFlag(false).setMessage("OA数量为空");
            }
            if(eclOaToPcsDetail.getQuantity()!=checkOADTO.getQuantity()){
                log.info("EBS数量为"+checkOADTO.getQuantity()+"OA数量为"+eclOaToPcsDetail.getQuantity() +"不一致");
                return checkOASecondVO.setFlag(false).setMessage("EBS数量为"+checkOADTO.getQuantity()+"OA数量为"+eclOaToPcsDetail.getQuantity() +"不一致");
            }
//            UpdateWrapper<EclOaToPcsDetail> updateWrapper = new UpdateWrapper<>();
//            updateWrapper.eq("REQUEST_ID", checkOADTO.getRequestId());
//            updateWrapper.set("FLAG", 1);
//            this.update(updateWrapper);
            return checkOASecondVO.setFlag(true).setMessage("校验通过");
    }

    @Override
    public Boolean updateFlag(List<Long> ids) {

        if (CollectionUtils.isEmpty(ids)) {
            return false;
        }
        List<EclOaToPcsDetail> updateList = ids.stream().map(id -> {
            EclOaToPcsDetail entity = new EclOaToPcsDetail();
            entity.setRequestId(String.valueOf(id));
            entity.setFlag(1);
            return entity;
        }).collect(Collectors.toList());
        return this.updateBatchById(updateList);
    }
}




